Custom RapidSpellGUI Interface

You can easily extend the RapidSpellGUI class to customise the GUI design, preserving all the functionality of the original GUI. To do so the only contract is that your sub-class overrides buildGUI(), calls getContentPane().add(X) to add your design to the JFrame and uses these protected fields as GUI components;

JButton addButton Function button - adds word in the query pane to user dictionary if specified.
JButton cancelButton Function button - cancels the search and disposes of this JFrame.
JButton changeButton Function button - changes current misspelt word in document to selected suggestion or amended query pane word.
JButton changeAllButton Function button - changes every occurrence of current misspelt word in document.
JButton ignoreAllButton Function button - ignores all occurrences of current misspelt (bad) word.
JButton ignoreButton Function button - ignores current bad word and continues checking document.
JTextArea queryWordPane JTextArea where not in dictionary (bad words) are queried and replacements can be entered.
JList suggestionsList JList where suggestions are loaded
JCheckBox suggestionFinderCheckBox Check box - enables/disables the suggestion finder.
JLabel notInDictionaryLabel JLabel marking the not in dictionary query pane.
JLabel suggestionsLabel JLabel marking the suggestions JList, is changed to "Finding Suggestions..." periodically.
boolean findSuggestions Whether this should look up suggestions for misspelt words or not.

A very simple example would be the following code, which can be called instead of RapidSpellGUI but used in the same manner.

Code Example

import com.keyoti.rapidSpell.desktop.RapidSpellGUI;
import javax.swing.*;
import java.awt.*;

public class CustomGUI extends RapidSpellGUI
{

		public CustomGUI()
		{
			super();
		}

		// VERY SIMPLE, BUT UGLY LOOKING EXAMPLE
		public void buildGUI()
		{
			Box myBox = Box.createVerticalBox();

			//define the protected fields as I want
			ignoreButton.setText("Ignore");
			ignoreAllButton.setText("Ignore All");
			changeButton.setText("Change");
			changeAllButton.setText("Change All");
			cancelButton.setText("Cancel");

			//add all the protected fields I want to use and layout as I wish
			myBox.add(notInDictionaryLabel);
			myBox.add(queryWordPane);
			myBox.add(ignoreButton);
			myBox.add(ignoreAllButton);
			myBox.add(new JScrollPane(suggestionsList,

				JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ));
			myBox.add(changeButton);
			myBox.add(changeAllButton);
			myBox.add(cancelButton);

			getContentPane().add(myBox);
		}
}

Notice that the protected fields of RapidSpellGUI were used with out declaration and without adding any listeners to them.